<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
<head>
  <link href="//gmpg.org/xfn/11" rel="profile">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="generator" content="Hugo 0.69.0" />

  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>我的博客</title>

  
  <link type="text/css" rel="stylesheet" href="/myhugo/css/print.css" media="print">
  <link type="text/css" rel="stylesheet" href="/myhugo/css/poole.css">
  <link type="text/css" rel="stylesheet" href="/myhugo/css/syntax.css">
  <link type="text/css" rel="stylesheet" href="/myhugo/css/hyde.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Abril+Fatface|PT+Sans:400,400i,700">


  
  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
  <link rel="shortcut icon" href="/favicon.png">

  
  <link href="/myhugo/index.xml" rel="alternate" type="application/rss+xml" title="我的博客" />
  
</head>

  <body class="theme-base-0d ">
  <aside class="sidebar">
  <div class="container sidebar-sticky">
    <div class="sidebar-about">
      <a href="/myhugo/"><h1>我的博客</h1></a>
      <p class="lead">
       小白的逆袭之旅 
      </p>
    </div>

    <nav>
      <ul class="sidebar-nav">
        <li><a href="/myhugo/">Home</a> </li>
        
      </ul>
    </nav>

    <p>&copy; 2020. All rights reserved. </p>
  </div>
</aside>

    <main class="content container">
    <div class="posts">
<article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day09/">七牛云存储</a>
  </h1>
  <time datetime="2020-04-30T21:35:23&#43;0800" class="post-date">Thu, Apr 30, 2020</time>
  ###django接口获取token
from qiniu import Auth class Qiniu(APIView): def get(self,request): #声明认证对象 参数（ak,sk） q = Auth('lSHiV0YqwAZwm-benIiATiafSQ4-y63Zg1TLmXg3','KFZy2dDBwOEHIU2Qmb1v6Kx4C2zvILxkMNDpI057') #获取token token = q.upload_token('md-admin') return Response({'code':200,'token':token}) #vue
&lt;template&gt; &lt;div&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt; 七牛用户头像： &lt;/td&gt; &lt;td&gt; &lt;input type=&quot;file&quot; @change=&quot;qiniu&quot;&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/template&gt; &lt;script&gt; export default { data () { return { msg: &quot;这是一个变量&quot;, src:'', //七牛 token:'', } }, //钩子函数 mounted:function(){ //获取token this.get_token(); }, methods:{ get_token:function(){ this.axios.get('http://127.0.0.1:8000/qiniu/').then(res=&gt;{ console.log(res) this.token = res.data.token console.log(this.token) }) }, //七牛上传 qiniu:function(e){ //获取文件 let file = e.
  
  <div class="read-more-link">
    <a href="/myhugo/day09/">Read More…</a>
  </div>
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day08/">本地文件上传</a>
  </h1>
  <time datetime="2020-04-29T17:03:36&#43;0800" class="post-date">Wed, Apr 29, 2020</time>
  1.准备工作 STATIC_URL = '/static/' STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static') ] #定义上传文件夹的路径 UPLOAD_ROOT = os.path.join(BASE_DIR,'static/upload') 1.2view视图 #导包 import uuid # 导入上传文件夹配置 from mydjango.settings import UPLOAD_ROOT import os # 导入类视图 from django.views import View from rest_framework.response import Response from rest_framework.views import APIView (一) class UploadFile(APIView): def post(self,request): #接受参数 myfile = request.FILES.get('file') print(myfile) ps:如果上传的图片是中文名称， QQ图片20200210134035.jpg&quot;，需要将 &quot; 替换掉 # 上传的文件是一个对象 myfilename=myfile.name.replace('&quot;','') #建立文件流对象 使用相对路径引入 二进制流写入 f = open(os.path.join(UPLOAD_ROOT,myfilename),'wb') #写入 for chunk in myfile.chunks(): f.write(chunk) f.close() return Response({'filename':myfilename}) (二) class UploadFile(APIView): def post(self,request): #接受参数 myfile = request.
  
  <div class="read-more-link">
    <a href="/myhugo/day08/">Read More…</a>
  </div>
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day07/">微博第三方登录</a>
  </h1>
  <time datetime="2020-04-28T20:49:14&#43;0800" class="post-date">Tue, Apr 28, 2020</time>
  第三方登录 具体流程 https://blog.csdn.net/qq_42249896/article/details/87433349
思维脑洞 vue登录页面请求微博登录接口 &lt;template&gt; &lt;div&gt; &lt;button @click='sina'&gt;微博登陆&lt;/button&gt; &lt;/div&gt; &lt;/template&gt; &lt;script&gt; export default { methods:{ sina:function() { //跳转 //微博api：https://api.weibo.com/oauth2/authorize //client_id：微博开放平台的appid //redirect_uri：返回的跳转地址 window.location.href =&quot;https://api.weibo.com/oauth2/authorize?client_id=1721358960&amp;redirect_uri=http://127.0.0.1:8000/md_admin/weibo&quot;; } } } &lt;/script&gt; django路由 from myapp.md_user import wb_back urlpatterns = [ path('md_admin/weibo/',wb_back), ] django接口 #新浪微博回调 def wb_back(request): #接受参数 code = request.GET.get('code',None) #定义token接口地址 url = &quot;https://api.weibo.com/oauth2/access_token&quot; #定义参数 re=requests.post(url,data={ 'client_id':'1721358960', 'client_secret':'6c3aae7af5600f10b9a0b40b6a952d01', &quot;grant_type&quot;:&quot;authorization_code&quot;, 'code':code, &quot;redirect_uri&quot;:&quot;http://127.0.0.1:8000/md_admin/weibo&quot; }) print(re.json()) #换取新浪用户昵称 res = requests.get('https://api.weibo.com/2/users/show.json', params={'access_token': re.json()['access_token'], 'uid': re.json()['uid']}) sina_id='' user_id='' #判断是否登陆过 user=User.
  
  <div class="read-more-link">
    <a href="/myhugo/day07/">Read More…</a>
  </div>
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day06/">Day06</a>
  </h1>
  <time datetime="2020-04-27T22:12:11&#43;0800" class="post-date">Mon, Apr 27, 2020</time>
  查看当前docker中的所有镜像：docker images 显示版本号：docker -v 进入虚拟机：docker-machine ssh 例：进入默认虚拟机：docker-machine ssh default 重启镜像：docker-machine restart default 查看所有docker内容：docker info 将镜像导出到位置/保存镜像：docker save -o '导出路径位置' redis/镜像名 删除镜像：docker rmi -f 975f/镜像ID 导入镜像：docker load -i 'D:\Program Files (x86)\docker\docker镜像\redis1.tar'/路径 查看所有容器：docker ps -a 查看正在运行的容器：docker ps 关闭正在运行的容器：docker stop 镜像ID(docker ps中的ID) 删除容器：docker rm $(docker ps -a(所有容器) -q(quit,已经退出的容器)) 例：docker rm $(docker ps -a -q) 后台启动服务和端口映射：docker run -p 主机未使用ip:服务端默认ip 镜像名称 服务名称 例：docker run -p 6380:6379 redis redis-server 查看镜像服务：docker run -ti 镜像id 例：docker run -ti 975f 查看ip：docker-machine ip default 退出镜像：exit 
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day05/">识别图片数字验证码</a>
  </h1>
  <time datetime="2020-04-26T22:36:53&#43;0800" class="post-date">Sun, Apr 26, 2020</time>
  攻略：https://v3u.cn/a_id_134
京东云：http://open.jd.com
import requests import base64 import urllib #获取密钥 res = requests.get(&quot;https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&amp;client_id=RQSCANnqoAs9Bk1cTnOWSema&amp;client_secret=G318YSye2P5vxv5g7xBfkwO9NOjBFd72&quot;) #这个url是由https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials，加client_id=，加应用API Key，加client_secret=，加应用的Secret Key token = res.json()['access_token'] # 定义头部信息 headers = { 'Content-Type': 'application/x-www-from/urlencoded' } url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=' + token # 读取图片 my_img = open('1.png', 'rb') tem_img = my_img.read() my_img.close() # 进行base64编码 temp_data = {'image': base64.b64encode(tem_img)} # 对图片地址进行urlencode操作 temp_data = urllib.parse.urlencode(temp_data) # 请求视图接口 res = requests.post(url=url, data=temp_data, headers=headers) code = res.json()['words_result'] print(code) str1='' for i in code: value=i['words'] str1+=value print(str1)
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day04/">Day04</a>
  </h1>
  <time datetime="2020-04-25T22:19:36&#43;0800" class="post-date">Sat, Apr 25, 2020</time>
  封装api //文件名：http.js import axios from 'axios' axios.defaults.baseURL=&quot;http://127.0.0.1:8000&quot; axios.defaults.timeout=1000 *10 axios.defaults.headers.post['Content-Type']='application/json'; axios.defaults.headers.put['Content-Type']='application/json'; //封装get请求 export function axios_get(url,params){ return new Promise( (resolve,reject)=&gt;{ axios.get(url,{params:params}) .then(res=&gt;{ resolve(res.data) }).catch(err=&gt;{ reject(err.data) }) } ) } //封装post请求 export function axios_post(url,data){ return new Promise( (resolve,reject)=&gt;{ console.log(data) axios.post(url,JSON.stringify(data)) //将json数据编译成字符串 .then(res=&gt;{ resolve(res.data) }).catch(err=&gt;{ reject(err.data) }) } ) } //封装put请求 export function axios_put(url,data){ return new Promise( (resolve,reject)=&gt;{ console.log(data) axios.put(url,JSON.stringify(data)) .then(res=&gt;{ resolve(res.data) }).catch(err=&gt;{ reject(err.data) }) } ) } 封装delete请求 export function axios_delete(url,data){ return new Promise( (resolve,reject)=&gt;{ console.
  
  <div class="read-more-link">
    <a href="/myhugo/day04/">Read More…</a>
  </div>
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day03/">django的琐碎</a>
  </h1>
  <time datetime="2020-04-23T19:28:48&#43;0800" class="post-date">Thu, Apr 23, 2020</time>
  [TOC] 1.django服务命令 1.1django app 建立 python manage.py startapp APP名 3.生成迁移表(两步操作) python manage.py makemigrations app名 python manage.py migrate tips: 如果在敲代码过程中，修改过models里的表结构，需要重新运行 生成迁移表命令 3.运行项目 python manage.py runserver 2.djgano内置password原理 # 导入加密库 import hashlib # md5加密方法 django内置的password原理 def make_password(mypass): # 生成md5对象 md5 = hashlib.md5() # 转码操作 mypass_utf8 = str(mypass).encode(encoding='utf-8') # 加密操作 md5.update(mypass_utf8) # 返回密文 return md5.hexdigest() #使用 # 注册接口 class Register(APIView): def post(self, request): # 接受参数 password = request.POST.get('password', None) #入库 user = User(password=make_password(password)) #保存结果 user.
  
  <div class="read-more-link">
    <a href="/myhugo/day03/">Read More…</a>
  </div>
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day02/">Vue基本语法</a>
  </h1>
  <time datetime="2020-04-22T12:49:40&#43;0800" class="post-date">Wed, Apr 22, 2020</time>
  语法糖 #v-bind指令用于设置HTML属性；v-bing可以直接用&quot;:&quot;来描述 eg: &lt;a v-bind:href=&quot;url&quot;&gt;链接&lt;/a&gt; &lt;img v-bind:src=&quot;imgUrl&quot;&gt; &lt;!--缩写为--&gt; &lt;a :href=&quot;url&quot;&gt;链接&lt;/a&gt; &lt;img :src=&quot;imgUrl&quot;&gt; #v-on 指令用于绑定HTML事件；v-on 可以直接用&quot;@&quot;来描述: eg: &lt;button v- on:click=&quot;handleClose&quot;&gt;点击隐藏&lt;/button&gt; &lt;!--缩写为--&gt; &lt;button @click=&quot;handleClose&quot;&gt;点击隐藏&lt;/button&gt; v-model和v-bind的区别 v-bind 只能实现数据的单向绑定，从 M 自动绑定到 V， 无法实现数据的双向绑定 v-model 可以实现 表单元素和 Model 中数据的双向数据绑定 &lt;!-- 注意： v-model 只能运用在 表单元素中 --&gt; v-model和v-bind代码参考 &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt; &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;ie=edge&quot;&gt; &lt;title&gt;Document&lt;/title&gt; &lt;script src=&quot;./lib/vue.js&quot;&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div id=&quot;app&quot;&gt; &lt;h4&gt;{{ msg }}&lt;/h4&gt; &lt;!-- v-bind 只能实现数据的单向绑定，从 M 自动绑定到 V， 无法实现数据的双向绑定 --&gt; &lt;!
  
  <div class="read-more-link">
    <a href="/myhugo/day02/">Read More…</a>
  </div>
  
</article><article class="post">
  <h1 class="post-title">
    <a href="/myhugo/day01/">git的相关操作</a>
  </h1>
  <time datetime="2020-04-21T09:30:23&#43;0800" class="post-date">Tue, Apr 21, 2020</time>
  git拉取别人项目 #建立一个文件夹 1.mkdir 文件名 2.cd 该文件名 #3.克隆 git clone https://gitee.com/QiHanXiBei/myvue tips:
1.一个文件里面只能有一个 .git 文件，而且 .git文件不能出现嵌套 2. 有的时候看不到 .git 文件，原因是 .git 文件被隐藏了，需要点击文件上栏的 查看，显示隐藏文件 即可
对自己的项目 #1.在Gitee建好库之后 git init git -add -A #把所有文件添加到本地暂存区 git commit -m'这次提交干嘛要的简介' #提交到版本库 链接库：git remote add origin https://gitee.com/cw_crfiton/cwdjango #创建云端仓库时用一次 上传：git push -u origin master #push 增加 origin 远程开端 提交自己的代码到gitee #素质三连 git add -A git commit -m'' git push origin master #将本地推送到线上 
  
</article>
</div>
    </main>

    
  </body>
</html>
